package com.ruoyi.asset.service.impl;

import java.util.List;
import java.util.Objects;

import com.ruoyi.asset.domain.BackFiles;
import com.ruoyi.asset.domain.BackMediaFile;
import com.ruoyi.asset.service.IBackMediaFileService;
import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.file.FileTypeUtils;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.asset.mapper.TbAssetsMapper;
import com.ruoyi.asset.domain.TbAssets;
import com.ruoyi.asset.service.ITbAssetsService;

/**
 * 物品管理-固定资产Service业务层处理
 *
 * @author ruoyi
 * @date 2025-01-24
 */
@Service
public class TbAssetsServiceImpl implements ITbAssetsService
{
    @Autowired
    private TbAssetsMapper tbAssetsMapper;
    @Autowired
    private IBackMediaFileService backMediaFileService;

    /**
     * 查询物品管理-固定资产
     *
     * @param assetId 物品管理-固定资产主键
     * @return 物品管理-固定资产
     */
    @Override
    public TbAssets selectTbAssetsByAssetId(Long assetId)
    {
        return tbAssetsMapper.selectTbAssetsByAssetId(assetId);
    }

    /**
     * 查询物品管理-固定资产
     *
     * @param assetNo 物品管理-固定资产编号
     * @return 物品管理-固定资产
     */
    @Override
    public TbAssets selectTbAssetsByAssetNo(String assetNo)
    {
        return tbAssetsMapper.selectTbAssetsByAssetNo(assetNo);
    }

    /**
     * 查询物品管理-固定资产列表
     *
     * @param tbAssets 物品管理-固定资产
     * @return 物品管理-固定资产
     */
    @Override
    public List<TbAssets> selectTbAssetsList(TbAssets tbAssets)
    {
        return tbAssetsMapper.selectTbAssetsList(tbAssets);
    }

    /**
     * 新增物品管理-固定资产
     *
     * @param tbAssets 物品管理-固定资产
     * @return 结果
     */
    @Override
    public int insertTbAssets(TbAssets tbAssets)
    {
        recordFileRelaInfo(tbAssets.getAssetId(),tbAssets.getFiles());
        return tbAssetsMapper.insertTbAssets(tbAssets);
    }

    /**
     * 修改物品管理-固定资产
     *
     * @param tbAssets 物品管理-固定资产
     * @return 结果
     */
    @Override
    public int updateTbAssets(TbAssets tbAssets)
    {
//        //先删除附件，再插入新附件
//        backMediaFileService.deleteBackMediaFileByAssetsId(tbAssets.getAssetId());
//        recordFileRelaInfo(tbAssets.getAssetId(),tbAssets.getFiles());
        tbAssets.setUpdateTime(DateUtils.getNowDate());
        return tbAssetsMapper.updateTbAssets(tbAssets);
    }

    /**
     * 批量删除物品管理-固定资产
     *
     * @param assetIds 需要删除的物品管理-固定资产主键
     * @return 结果
     */
    @Override
    public int deleteTbAssetsByAssetIds(Long[] assetIds)
    {
        return tbAssetsMapper.deleteTbAssetsByAssetIds(assetIds);
    }

    /**
     * 删除物品管理-固定资产信息
     *
     * @param assetId 物品管理-固定资产主键
     * @return 结果
     */
    @Override
    public int deleteTbAssetsByAssetId(Long assetId)
    {
        return tbAssetsMapper.deleteTbAssetsByAssetId(assetId);
    }

    /**
     * 记录资产文件关联信息
     *
     * @param assetsId
     * @param files
     */
    public void recordFileRelaInfo(Long assetsId, List<BackFiles> files) {
        if (CollectionUtils.isEmpty(files)) {
            return;
        }
        // 多媒体附件关联信息
        for (BackFiles file : files) {
            if (Objects.isNull(file.getFileId())) {
                continue;
            }
            BackMediaFile bmf = new BackMediaFile();
            bmf.setLinkId(assetsId);
            bmf.setLinkType("1");
            bmf.setFileType(FileTypeUtils.getFileTypeName(file.getFilePath()));
            bmf.setFileId(file.getFileId());
            backMediaFileService.insertBackMediaFile(bmf);
        }
    }

}
